package ma.co.ba.BusinessApplications.presentation.controllers.groupes;

import java.util.List;

import ma.co.ba.BusinessApplications.business.groupes.GroupeBusiness;
import ma.co.ba.BusinessApplications.business.utilisateurs.UtilisateurBusiness;
import ma.co.ba.BusinessApplications.model.Groupe;
import ma.co.ba.BusinessApplications.model.Utilisateur;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.support.SessionStatus;

@Controller
@RequestMapping("/groupes")
public class GroupeController {
	@Autowired
	UtilisateurBusiness utilisateurBusiness;
	@Autowired
	GroupeBusiness groupeBusiness;

	@RequestMapping(method = RequestMethod.GET)
	public String groupesPage(ModelMap model) {
		Groupe groupe = new Groupe();

		model.addAttribute("groupe", groupe);
		// // return form view
		return "groupes";
	}

	@RequestMapping(method = RequestMethod.POST)
	public String processSubmit(@ModelAttribute("groupe") Groupe groupe,
			BindingResult result, SessionStatus status) {
		
		groupeBusiness.saveGroupe(groupe);
		return "redirect:groupes";
		
	}

	@RequestMapping(value="/usersGroup", method = RequestMethod.GET)
	public String usersOfGroup(@ModelAttribute("id") int groupeId, @ModelAttribute("groupe") Groupe groupe,
			BindingResult result, SessionStatus status, ModelMap model) {
		
		groupe = groupeBusiness.getGroupeById(groupeId);
		List<Utilisateur> utilisateursGroupe = groupeBusiness.getUtilisateursOfGroupeById(groupeId);
		
		for (Utilisateur utilisateur : utilisateursGroupe) {
			System.out.println("Prenom : " + utilisateur.getPrenom());
		}
		
		model.addAttribute("utilisateursGroupe", utilisateursGroupe);
		model.addAttribute("groupe", groupe);
		
		return "usersGroup";
		
	}
	

		
	
	@ModelAttribute("groupeList")
	public List<Groupe> getConsultantsList() {
		List<Groupe> groupeList = null;
		groupeList = groupeBusiness.getGroupeList();
		return groupeList;
	}


	
	// @InitBinder
	// public void initBinder(WebDataBinder binder) {
	// SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
	// binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat,
	// true));
	// }
	
	
	@ModelAttribute("utilisateurs")
	public List<Utilisateur> getUtilisateurs() {
		List<Utilisateur> utilisateurs = utilisateurBusiness
				.getAllConsultants();
		return utilisateurs;
	}

}